package concurrent.chapter1;

/**
 * 03讲、介绍三种高效优雅的Singleton实现方式
 */
//建议使用这种优雅的方式
//类的加载分为几个阶段，装载(读class文件)，链接(初始赋值，给static初始化)
public class SingletonObject6 {

    private SingletonObject6() {
    }

    //static在jvm只初始化一次，严格保证线程执行的顺序
    //static被调用是主动加载，使用时才加载class对象
    public static class InstanceHolder {
        private static volatile SingletonObject6 instance = new SingletonObject6();
    }

    public static SingletonObject6 getInstance() {
        //调用static类
        return InstanceHolder.instance;
    }

}
